/**
 * Created by Dell on 2017/5/10.
 */
const brand = require('../models/brand');
const systemlogs = require('../models/systemlogs');
const log = require('log4js').getLogger("brand");
/**
 * 后台添加品牌
 * @param req
 * @param res
 */
exports.add_brand = function(req, res){
  const args = req.body;
  if(!args.name){
      return res.send({success:false,data:'请填写品牌名称'});
  };
  if(!args.logo){
      return res.send({success:false,data:'请给品牌添加个图标'});
  };
  if(!args.sub_brand){
      return res.send({success:false,data:'请添加子分类'});
  };
  // if(!args.desc){
  //     return res.send({success:false,data:'请填写简单描述'});
  // };
  let info = [];
  let a = 1;
  let sub_brand = args.sub_brand;
    sub_brand.forEach(function(brand){//是否有重复的二级品牌
        let len = info.length;
        if(len == 0 ){
            info.push(brand);
        }else {
            for(let i = 0; i<len;i++){
                if(info[i]==brand){
                    a = 2;
                    brand;
                }else {
                    info.push(brand);
                }
            }
        }
    });
    if(a == 2){
        return res.send({success:false,data:'您添加的子品牌中有重复,请确认'});
    }
  const params = [
      args.name,//名称
      0,//没有父级
      1,//一级品牌
      args.logo,//logo
      args.desc?args.desc:'这是一级品牌',//描述
      1,//状态
      new Date()//创建时间
  ];
  brand.add_brand(params, args, function(err, result){
    if(err){
        return res.send({success:false,data:err})//报错
    }else if(result == 'exit_p'){
        return res.send({success:false,data:'您添加的品牌已经存在,请不要重复添加'});//一级品牌重复
    }else if(result == 'fail_p'){
        return res.send({success:false,data:'添加的品牌失败'});//一级品牌失败
    }else if(result == 'fail_s'){
        return res.send({success:false,data:'添加子品牌失败'});//一级品牌重复
    }else{
        let desc = req.user.username+' 添加了名称为"'+args.name+'"的品牌';
        const params_sys = [
            req.user.id,
            desc,
            new Date(),
            5
        ];
        systemlogs.add_systemlogs(params_sys, function(err, result){});
        return res.send({success:true,data:'添加品牌成功'})
    }
  })
};
/**
 * 后台多条件查询一级品牌列表
 */
exports.list_b = function(req, res){
    const args = req.query;
    let limit = Number(args.limit);//每页显示多少条
    let page = Number(args.page?args.page:1);//页数（默认第一页）
    let params = [1];//一级分类
    if(!limit){
        return res.send({success:false,data:'请选择每页显示多少条'});
    }
    if(!page){
        return res.send({success:false,data:'请选择当前页数'});
    }
    if(args.status&&args.status!='all'){
        params.push(args.status);//状态查询
    }
    if(args.keyword){
        params.push('%'+args.keyword+'%');//关键字查询(品牌名、描述)
    }
    params.push(limit);
    params.push((page-1)*limit)
    brand.list_b(params, args, function(err, result){
        if(err){
            return res.send({success:false,data:err});
        }else {
            return res.send({success:true,data:result.rows});
        }
    })
};
/**
 * 后台多条件查询一级品牌列表
 */
exports.count_b = function(req, res){
    const args = req.query;
    let params = [1];//一级分类
    if(args.status&&args.status!='all'){
        params.push(args.status);//状态查询
    }
    if(args.keyword){
        params.push('%'+args.keyword+'%');//关键字查询(品牌名、描述)
    }
    brand.count_b(params, args, function(err, result){
        if(err){
            return res.send({success:false,data:err});
        }else {
            return res.send({success:true,data:result.rows[0].count});
        }
    })
};
/**
 * 后台一级品牌的子品牌
 * @param req
 * @param res
 */
exports.sub_brand= function(req, res){
    const args = req.query;
    if(!args.brandid){
        return res.send({success:false,data:'请选择要查询的一级品牌id'});
    }
    const params1 = [1,args.brandid];
    const params2 = [2,args.brandid];
    brand.sub_brand(params1, params2, function(err, result){//去models中执行
        if(err) {
            return res.send({success:false,data:err});//报错
        }else if(result == 'null'){
            return res.send({success:false,data:'没有该一级品牌'});//没有一级品牌
        }else {
            return res.send({success:true,data:result.rows});//返回信息
        }
    })
};
/**
 * 编辑品牌时，品牌详情
 * @param req
 * @param res
 */
exports.brand_info = function(req, res){
    const args = req.query;
    if(!args.brandid){
        return res.send({success:false,data:'请选择要查看的品牌'});
    };
    const params = [
        args.brandid,//查询条件
        1
    ];
    brand.brand_info (params, function(err, result){
        if(err){
            return res.send({success:false,data:err});//报错
        }else if(result.rowCount == 0){
            return res.send({success:false,data:'您选择的品牌不存在'});
        }else {
            return res.send({success:true,data:result.rows[0]});//返回的单个品牌的详情
        }
    });
};
/**
 * 后台编辑一级品牌
 * @param req
 * @param res
 */
exports.upd_brand = function(req,res){
    const args = req.body;
    let params = [];
    if(!args.brandid){
        return res.send({success:false,data:'请选择您要修改的品牌'});
    };
    if(args.name){
        params.push(args.name);//编辑的名称
    };
    if(args.logo){
        params.push(args.logo);//编辑logo
    };
    if(args.desc){
        params.push(args.desc);//编辑描述
    };
    if(args.status){
        params.push(args.status);//编辑状态
    };
    params.push(args.brandid);//品牌id
    params.push(1);//一级品牌
    brand.upd_brand(params, args, function(err, result){//去models执行sql语句
        if(err){
            return res.send({success:false,data:err});//报错
        }else if(result == 'null'){
            return res.send({success:false,data:'没有该品牌，请确认'});
        }else if(result == 'exit_name'){
            return res.send({success:false,data:'您编辑的品牌名已经存在，请更换'});
        }else if(result == 'fail'){
            return res.send({success:false,data:'编辑失败，请重试'});
        }else {
            let desc = req.user.username+' 编辑了名称为"'+args.name+'"的品牌';
            const params_sys = [
                req.user.id,
                desc,
                new Date(),
                5
            ];
            systemlogs.add_systemlogs(params_sys, function(err, result){});
            return res.send({success:true,data:'编辑品牌成功'});
        }
    });
};
/**
 * 后台编辑一级品牌
 * @param req
 * @param res
 */
exports.upd_status = function(req,res){
    const args = req.body;
    let params = [];
    if(!args.brandids){
        return res.send({success:false,data:'请选择您要修改的品牌'});
    };
    if(args.status){
        params.push(args.status);//编辑状态
    };
    if(args.brandids.constructor != Array){//编辑的分类id是否是数组集合
        return res.send({succeaa:false,data:'请以数组方式传递要编辑的品牌id！'});
    }
    params.push(1);//一级品牌
    brand.upd_status(params, args, function(err, result){//去models执行sql语句
        if(err){
            return res.send({success:false,data:err});//报错
        }else if(result == 'null'){
            return res.send({success:false,data:'没有该品牌，请确认'});
        }else if(result == 'exit_name'){
            return res.send({success:false,data:'您编辑的品牌名已经存在，请更换'});
        }else if(result == 'fail'){
            return res.send({success:false,data:'编辑失败，请重试'});
        }else {
            let desc = req.user.username+' 编辑了一批品牌的状态';
            const params_sys = [
                req.user.id,
                desc,
                new Date(),
                5
            ];
            systemlogs.add_systemlogs(params_sys, function(err, result){});
            return res.send({success:true,data:'编辑品牌成功'});
        }
    });
};
/**
 * 后台编辑单个二级品牌名
 */
exports.upd_sub = function(req, res){
    const args = req.body;
    if(!args.brandid){
        return res.send({success:false,data:'请选择要编辑的品牌'});
    };
    if(!args.name){
        return res.send({success:false,data:'请填写要编辑的名称'})
    };
    if(!args.pid){
        return res.send({success:false,data:'缺少父级品牌id'});
    };
    const params = [
        args.name,//品牌名
        args.brandid,//品牌id
        args.pid,//父级id
        2//二级品牌
    ];
    brand.upd_sub (params, args, function(err,result){//去models执行查询
        if(err){
            return res.send({success:false,data:err});//报错
        }else if(result == 'null'){
            return res.send({success:false,data:'没有这个品牌，请重试'});
        }else if(result == 'exit_name'){
            return res.send({success:false,data:'您修改的品牌名称在该父级品牌中已经存在，请重试'});
        }else if(result == 'fail'){
            return res.send({success:false,data:'您编辑品牌失败,请重试'});
        }else {
            let desc = req.user.username+'编辑了名为'+args.name+'的二级品牌';
            const params_sys = [
                req.user.id,
                desc,
                new Date(),
                5
            ];
            systemlogs.add_systemlogs(params_sys, function(err, result){});//添加日志
            return res.send({success:true,data:'编辑成功'});
        }
    });
};
/**
 *后台批量删除一级品牌
 * @param req
 * @param res
 */
exports.remove = function(req, res){
  const args = req.body;
  if(!args.brandids){
      return res.send({success:false,data:'请选择至少一个品牌进行删除'});
  };
  brand.remove(args, function(err, result){//去models执行操作
      if(err){
          return res.send({success:false,data:err});
      }else if (result == 'second'){
          return res.send({success:false,data:'您删除的品牌中含有二级品牌'});
      }else if(result == 'fail'){
          return res.send({success:false,data:'删除失败，请重试'});
      }else {
          let desc = req.user.username+'删除了一批一级品牌';
          const params_sys = [
              req.user.id,
              desc,
              new Date(),
              5
          ];
          systemlogs.add_systemlogs(params_sys, function(err, result){});//添加日志
          return res.send({success:true,data:'删除成功'});
      }
  });
};
/**
 * 后台品牌关联图片（已关联和未关联列表）
 * @param req
 * @param res
 */
exports.picture_list = function(req, res){
    const args = req.query;
    if(!args.brandid){
        return res.send({success:false,data:'请选择要关联的品牌'});
    }
    if(!args.type){
        return res.send({success:false,data:'请选择查看的条件'});
    }
    const limit = Number(args.limit);//每页显示多少条
    const page = Number(args.page);//当前页数
    if(!limit){
        return res.send({success:false,data:'请选择每页显示多少条'});
    }
    if(!page){
        return res.send({success:false,data:'请选择当前页数'});
    }
    let params = [
        limit,
        (page-1)*limit//开始条
    ];
    if(args.type == 'unrelated'){
        params.push(1)//正常状态
        params.push(1)//未删除
    };
    brand.picture_list(params, args, function(err, result){
        if(err){
            return res.send({success:false,data:err});
        }else {
            return res.send({success:true,data:result.rows});
        }
    })
};
/**
 * 后台品牌关联图片（已关联和未关联列表）
 * @param req
 * @param res
 */
exports.picture_count = function(req, res){
    const args = req.query;
    if(!args.brandid){
        return res.send({success:false,data:'请选择要关联的品牌'});
    }
    if(!args.type){
        return res.send({success:false,data:'请选择查看的条件'});
    }
    let params = [];
    if(args.type == 'unrelated'){
        params.push(1)//正常状态
        params.push(1)//未删除
    };
    brand.picture_count(params, args, function(err, result){
        if(err){
            return res.send({success:false,data:err});
        }else {
            return res.send({success:true,data:result.rows[0].count});
        }
    })
};
/**
 * 后台设置图片和品牌关联
 * @param req
 * @param res
 */
exports.picture_relate = function(req,res){
    const args = req.body;
    if(!args.brandid){
        return res.send({success:false,data:'请选择要关联的品牌'});
    }
    if(!args.pictureid){
        return res.send({success:false,data:'请选择要关联的图片'});
    }
    brand.picture_relate(args, function(err, result){
        if(err){
            return res.send({success:false,data:err});
        }else if(result == 'null_brand'){
            return res.send({success:false,data:'没有该二级品牌'});
        }else if(result == 'null_picture'){
            return res.send({success:false,data:'没有该图片'});
        }else if(result == 'exit_relate'){
            return res.send({success:false,data:'该图片与品牌已经添加过关联'});
        }else if(result == 'too_munch_picture'){
            return res.send({success:false,data:'图片关联已经达到上限'});
        }else if(result == 'fail'){
            return res.send({success:false,data:'图片与品牌关联失败'});
        }else{
            let desc = req.user.username+'添加品牌'+result[1]+'与图片'+result[0]+'关联';
            const params_sys = [
                req.user.id,
                desc,
                new Date(),
                5
            ];
            systemlogs.add_systemlogs(params_sys, function(err, result){});//添加日志
            return res.send({success:true,data:'图片与品牌关联成功'})
        }
    });
};

/**
 * 后台设置图片和品牌关联
 * @param req
 * @param res
 */
exports.picture_unrelate = function(req,res){
    const args = req.body;
    if(!args.brandid){
        return res.send({success:false,data:'请选择要解除关联的品牌'});
    }
    if(!args.pictureid){
        return res.send({success:false,data:'请选择要解除关联的图片'});
    }
    brand.picture_unrelate(args, function(err, result){
        if(err){
            return res.send({success:false,data:err});
        }else if(result == 'null_brand'){
            return res.send({success:false,data:'没有该二级品牌'});
        }else if(result == 'null_picture'){
            return res.send({success:false,data:'没有该图片'});
        }else if(result == 'exit_relate'){
            return res.send({success:false,data:'该图片与品牌未设置关联，请再次确认'});
        }else if(result == 'fail'){
            return res.send({success:false,data:'图片与品牌关联失败'});
        }else{
            let desc = req.user.username+'添加品牌'+result[1]+'与图片'+result[0]+'关联';
            const params_sys = [
                req.user.id,
                desc,
                new Date(),
                5
            ];
            systemlogs.add_systemlogs(params_sys, function(err, result){});//添加日志
            return res.send({success:true,data:'图片与品牌解除关联成功'})
        }
    });
};

/**
 * 图片关联项目列表
 * @param req
 * @param res
 */
exports.relate_list_brand = function(req, res){
    const args = req.query;
    let limit = Number(args.limit);
    let page = Number(args.page);
    if(!args.projectid){
        return res.send({success:false,data:'请选择要关联的项目'});
    };
    if(!args.type){
        return res.send({success:false,data:'请选择要查看的列表类型（已关联、未关联）'});
    };
    if(!limit){
        return res.send({success:false,data:'请选择每页显示多少条'});
    };
    if(!page){
        return res.send({success:false,data:'请选择当前页数'});
    };
    let params = [
        limit,
        (page-1)*limit
    ];
    params.push(2);
    if(args.type == 'unrelated'){
        params.push(1)//正常状态
    }
    brand.relate_list_brand(args, params, function(err, result){
        if(err){
            return res.send({success:false,data:err});
        }else{
            return res.send({successs:true,data:result.rows})
        }
    })
};
/**
 * 图片关联项目列表
 * @param req
 * @param res
 */
exports.relate_count_brand = function(req, res){
    const args = req.query;
    let params = [2];
    if(!args.projectid){
        return res.send({success:false,data:'请选择要关联的项目'});
    };
    if(!args.type){
        return res.send({success:false,data:'请选择要查看的列表类型（已关联、未关联）'});
    };
    if(args.type == 'unrelated'){
        params.push(1)//正常状态
    }
    brand.relate_count_brand(args, params, function(err, result){
        if(err){
            return res.send({success:false,data:err});
        }else{
            return res.send({successs:true,data:result.rows[0].count})
        }
    });
};


/**
 * 图片关联项目列表
 * @param req
 * @param res
 */
exports.relate_list_picture = function(req, res){
    const args = req.query;
    let limit = Number(args.limit);
    let page = Number(args.page);
    if(!args.pictureid){
        return res.send({success:false,data:'请选择要关联的图片'});
    };
    if(!args.type){
        return res.send({success:false,data:'请选择要查看的列表类型（已关联、未关联）'});
    };
    if(!limit){
        return res.send({success:false,data:'请选择每页显示多少条'});
    };
    if(!page){
        return res.send({success:false,data:'请选择当前页数'});
    };
    let params = [
        limit,
        (page-1)*limit,
        2
    ];
    if(args.type == 'unrelated'){
        params.push(1)//正常状态
    }
    brand.relate_list_picture(args, params, function(err, result){
        if(err){
            return res.send({success:false,data:err});
        }else{
            return res.send({successs:true,data:result.rows})
        }
    })
};
/**
 * 图片关联项目列表
 * @param req
 * @param res
 */
exports.relate_list_picture_app = function(req, res){
    const args = req.query;
    let limit = Number(args.limit);
    let page = Number(args.page);
    if(!args.brandid){
        return res.send({success:false,data:'请选择要查看的品牌id'});
    };
    if(!limit){
        return res.send({success:false,data:'请选择每页显示多少条'});
    };
    if(!page){
        return res.send({success:false,data:'请选择当前页数'});
    };
    let params = [
        limit,
        (page-1)*limit
    ];
    brand.relate_list_picture_app(args, params, req, function(err, result){
        if(err){
            return res.send({success:false,data:err});
        }else{
            return res.send({successs:true,data:result})
        }
    })
};
/**
 * 图片关联项目列表
 * @param req
 * @param res
 */
exports.relate_count_picture = function(req, res){
    const args = req.query;
    let params = [2];
    if(!args.pictureid){
        return res.send({success:false,data:'请选择要关联的图片'});
    };
    if(!args.type){
        return res.send({success:false,data:'请选择要查看的列表类型（已关联、未关联）'});
    };
    if(args.type == 'unrelated'){
        params.push(1)//正常状态
    }
    brand.relate_count_picture(args, params, function(err, result){
        if(err){
            return res.send({success:false,data:err});
        }else{
            return res.send({successs:true,data:result.rows[0].count})
        }
    });
};
/**
 * 用户关注一级品牌
 * @param req
 * @param res
 */
exports.attracted = function(req, res){
    const args = req.body;
    if(!args.brandid){
        return res.send({success:false,data:'请选择要关注的一级品牌'});
    }
    let params = [
        args.brandid
    ];
    brand.attracted(params, req, function(err, result){
        if(err){
            return res.send({success:false,data:err});
        }else if(result == 'null'){
            return res.send({success:false,data:'该品牌不可用'});
        }else if(result == null){
            return res.send({success:false,data:'添加关注失败，请重试'});
        }else if(result == 'exit_logs'){
            return res.send({success:false,data:'该品牌已经添加关注，请不要重复关注'});
        }else{
            return res.send({success:true,data:'添加关注成功',info:result});
        }
    })
};
/**
 * 用户取消关注一级品牌
 * @param req
 * @param res
 */
exports.unattracte = function(req, res){
    const args = req.body;
    if(!args.brandid){
        return res.send({success:false,data:'请选择要关注的一级品牌'});
    }
    let params = [
        args.brandid
    ];
    brand.unattracte(params, req, function(err, result){
        if(err){
            return res.send({success:false,data:err});
        }else if(result == 'null'){
            return res.send({success:false,data:'该品牌不可用'});
        }else if(result == null){
            return res.send({success:false,data:'取消关注失败，请重试'});
        }else if(result == 'null_logs'){
            return res.send({success:false,data:'您尚未添加关注'});
        }else{
            return res.send({success:true,data:'取消关注成功',info:result});
        }
    })
};
/**
 * 品牌详情
 * @param req
 * @param res
 */
exports.info = function (req, res) {
    const args = req.query;
    if(!args.brandid){
        return res.send({success:false,data:'请选择要查看的品牌'});
    }
    const params = [
        args.brandid,
        req.user.id
    ];
    brand.info(params, function(err, result){
        if(err){
            return res.send({success:false,data:err});
        }else if (result == null){
            return res.send({success:false,data:'没有这个品牌'});
        }else {
            return res.send({success:true,data:result});
        }
    })
};